#ifndef _ARES_PATH
#define _ARES_PATH

#include <vector>
#include "ares_pathing/cell.h"
#include "drive_commands/path_point.h"

using namespace std;
using namespace drive_commands;

class Path{
    public:
        static const float maxVel = 1.2;    //maximum allowed robot velocity
        static const int accSteps = 2;
        static const int decSteps = 2;    
    
        Path(cell c);
        void setStart(cell c);      
        bool addCell(int x, int y);
        void setRealGoal(cell g);

        /*Preconditions: the ideal goal of the path
          Postconditions: all of the cells have headings assigned, and the path score is saved and returned
        */
        float calcScore(cell g);

        void setVel();
        
        /*Preconditions: none
          Postconditions: the next 5 path points are generated, including the skip factor. If you reach the end, the last point is just repeated.
        */
        void pathPointGen(int s, path_point* p);

    private:
        float score;
        vector<cell> route;

         
};//end Path

#endif
